In moving picture coding processes, the quantity of information is generally reduced using redundancy of the moving pictures in spatial and temporal directions. Here, a method using the redundancy in the spatial direction is generally represented by the transformation into the frequency domain. A method using the redundancy in the temporal direction is represented by an inter-picture prediction (hereinafter referred to as inter prediction) coding process.
In the inter prediction coding process, when coding a certain picture, a coded picture located, in display time order, before or after the current picture to be coded is used as a reference picture. Subsequently, a motion vector is derived through motion estimation of the current picture with respect to the reference picture, and a difference is calculated between image data of the current picture and prediction picture data resulting from motion compensation based on the motion vector, to remove the redundancy in the temporal direction. Here, in the motion estimation, values of difference between blocks within the reference picture and a current block to be coded which is included in the current picture are calculated, and one of the blocks within the reference picture which has the smallest value of difference is defined as a reference block. Using the current block and the reference block, a motion vector is then estimated.
In the moving picture coding scheme called H.264, which has already been standardized, three types of pictures: I-picture, P-picture, and B-picture, are used to reduce the quantity of information. The I-picture is a picture on which no inter prediction coding process is performed, that is, on which only an intra-picture prediction (hereinafter referred to as intra prediction) coding process is performed. The P-picture is a picture on which the inter prediction coding process is performed with reference to only one coded picture located before or after the current picture in display time order. The B-picture is a picture on which the inter prediction coding process is performed with reference to two coded pictures located before or after the current picture in display time order.
In the inter prediction coding, a reference picture list for specifying the reference picture is generated. The reference picture list is a list in which a reference picture index is assigned to each coded reference picture which is referred to in the inter prediction. For example, a B-picture holds two reference picture lists because it can be coded with reference to two pictures. By the reference picture index, a reference picture is then specified from the reference picture lists.
FIG. 13 shows an example of the reference picture lists in a B-picture. A reference picture list 0 (hereinafter referred to as a reference list L0) in FIG. 13 is an example of the reference picture list in a prediction direction 0 in bi-directional prediction. In the example of FIG. 13, a reference picture 1 in display order 2 is assigned to a value 0 of a reference picture index 0, a reference picture 2 in display order 1 is assigned to a value 1 of the reference picture index 0, and a reference picture 3 in display order 0 is assigned to a value 2 of the reference picture index 0. In other words, the reference picture indices are assigned in order from temporally closest to the current picture in display order.
Meanwhile, a reference picture list 1 (hereinafter referred to as a reference list L1) is an example of the reference picture list in a prediction direction 1 in bi-directional prediction. In the example of FIG. 13, a reference picture 2 in display order 1 is assigned to a value 0 of a reference picture index 1, a reference picture 1 in display order 2 is assigned to a value 1 of the reference picture index 1, and a reference picture 3 in display order 0 is assigned to a value 2 of the reference picture index 1.
As above, it is possible that the reference picture indices assigned to each reference picture are different in each prediction direction (reference pictures 1 and 2 in FIG. 13) and that the reference picture indices assigned to each reference picture are the same in the respective prediction directions (a reference picture 3 in FIG. 13). In coding a B-picture, the inter prediction will be performed using a motion vector (mvL0) which refers to the reference picture specified by the reference picture index 0 in the reference list L0 and a motion vector (mvL1) which refers to the reference picture specified by the reference picture index 1 in the reference list L1. In coding a P-picture, only one reference list will be used.
Furthermore, in the moving picture coding scheme called H.264, a coding mode called temporal direct mode can be selected at the time of deriving a motion vector in coding of a B-picture. The inter prediction coding method in temporal direct is described with reference to FIG. 14. FIG. 14 illustrates motion vectors in temporal direct and shows the case where a block “a” in a picture B2 is coded in temporal direct.
This case uses a motion vector “a” of a block “b” that is co-located with the block “a” and included in a picture P3 which is a reference picture located after the picture B2. The motion vector “a” is a motion vector used in coding of the block “b” and refers to a picture P1. Using a motion vector parallel to the motion vector “a”, a reference block is then obtained from each of the picture P1 which is a forward reference picture and the picture P3 which is a backward reference picture, and the block “a” is coded based on bi-directional prediction. Specifically, the motion vectors used in coding of the block “a” are a motion vector “b” with respect to the picture P1 and a motion vector “c” with respect to the picture P3.